import { reqGetSearchInfo } from "@/api";

//准备 actions 对象：响应组件中用户的动作
const actions = {
    //获取 search 模块的搜索结果，至少需要传递一个空对象
    async getSearchList({ commit }, params = {}) {
        let result = await reqGetSearchInfo(params);
        if (result.code == 200) {
            commit("GET_SEARCH_LIST", result.data);
        }
    },
};

//准备 mutations 对象：修改 state 中的数据
const mutations = {
    //获取 search 模块的搜索结果
    GET_SEARCH_LIST(state, searchList) {
        state.searchList = searchList;
    },
};
//准备 state 对象：保存具体的数据
const state = {
    //state中数据初始化，数据类型对应接口返回的数据类型
    searchList: {},
};

//计算属性
//项目当中 getters 主要的作用是简化仓库中的数据
//可以把组件中需要的数据简化一下，在获取组件的数据时就显得简单
const getters = {
    //商品列表。当前形参 state 是当前仓库中的 state，不是大仓库中的 state
    //需要注意的是：如果网络不通的情况下，API 接口无法返回数据，结果将是 undefined，因此需要设置为数组对象
    goodsList(state) {
        return state.searchList.goodsList || [];
    },
    //品牌列表
    trademarkList(state) {
        return state.searchList.trademarkList || [];
    },
    //商品属性列表
    attrsList(state) {
        return state.searchList.attrsList || [];
    }
};

//创建并暴露 store
export default {
    actions,
    mutations,
    getters,
    state
}